Raspberry Pi Pico (W) – poznámky

Chvíli jsem si hrál s Raspberry Pi Pico W, tak tady je pár poznámek a zkušeností, které by se mohly hodit.

Raspberry Pi Pico je zajímavý mikrokontrolér. Jeho IO matrix je extrémně konfigurovatelný a rychlý. Pro low-level hraní to může být lepší než ESP32.

Lze pro to vyvíjet třemi základními způsoby:

  • V micropythonu. Jednoduché, funkční, pro spoustu věcí to bude stačit.
  • Pomocí neoficiálního core pro Arduino. Pak se to ukazuje jako deska v Arduino IDE a běží tam spousta knihoven z Arduino světa. Zde je samozřejmě omezený přístup k hardware, protože od mnoha věcí je programátor odstíněn abstrakcemi Arduino core.
  • V céčku pomocí oficiálního SDK.

Všechny varianty jsem vyzkoušel.

Celý příspěvek

ESP32-S2 – funkce a omezení jednotlivých pinů

Všechny piny mají interní nastavitelný pull-up/pull-down rezistor, kromě 46 (fixní pulldown).

Všechny piny jsou obousměrné, kromě 46 (jen input).

The absolute maximum current drawn per GPIO is 40mA according to the “Recommended Operating Conditions” section in the ESP32-S2 datasheet.

pinfunkceomezení
0PWMboot mode selection
1TOUCH1, ADC1_CH0, RTC GPIO, PWM
2TOUCH2, ADC1_CH1, RTC GPIO, PWM
3TOUCH3, ADC1_CH2, RTC GPIO, PWM
4TOUCH4, ADC1_CH3, RTC GPIO, PWM
5TOUCH5, ADC1_CH4, RTC GPIO, PWM
6TOUCH6, ADC1_CH5, RTC GPIO, PWM
7TOUCH7, ADC1_CH6, RTC GPIO, PWM
8TOUCH8, ADC1_CH7, RTC GPIO, PWM
9TOUCH9, ADC1_CH8, RTC GPIO, PWM
10TOUCH10, ADC1_CH9, RTC GPIO, PWM
11TOUCH11, ADC2_CH0, RTC GPIO, PWM
12TOUCH12, ADC2_CH1, RTC GPIO, PWM
13TOUCH13, ADC2_CH2, RTC GPIO, PWM
14TOUCH14, ADC2_CH3, RTC GPIO, PWM
15U0RTS, ADC2_CH4, (krystal 32 kHz p), RTC GPIO, PWM
16U0CTS, ADC2_CH5, (krystal 32 kHz n), RTC GPIO, PWM
17U1TXD, ADC2_CH6, DAC_1, RTC GPIO, PWM
18U1RXD, ADC2_CH7, DAC_2, RTC GPIO, PWM
19U1RTS, ADC2_CH8, USB_D-, RTC GPIO, PWMnative USB
20U1CTS, ADC2_CH9, USB_D+, RTC GPIO, PWMnative USB
21RTC GPIO, PWM
26SPICS1, PWMPSRAM, FLASH
27SPIHDPSRAM, FLASH
28SPIWPPSRAM, FLASH
29SPICS0PSRAM, FLASH
30SPICLKPSRAM, FLASH
31SPIQPSRAM, FLASH
32SPIDPSRAM, FLASH
33SPIIO4, FSPIHD, PWM
34SPIIO5, FSPICS0, PWM
35SPIIO6, FSPID, PWM
36SPIIO7, FSPICLK, PWM
37SPIDQS, FSPIQ, PWM
38FSPIWP, PWM
39MTCK, PWMJTAG
40MTDO, PWMJTAG
41MTDI, PWMJTAG
42MTMS, PWMJTAG
43U0TXD
44U0RXD
45flash+spiram Vcc select
46boot mode selection
pouze vstupní

The ESP32-S2 chip features hardware filters to remove unwanted glitch pulses from the input GPIO, which can help reduce false triggering of the interrupt and prevent a noise being routed to the peripheral side. Each GPIO can be configured with a glitch filter, which can be used to filter out pulses shorter than two sample clock cycles. The duration of the filter is not configurable. The glitch filter is disabled by default, and can be enabled by calling gpio_glitch_filter_enable().

Possible PWM GPIO pins on the ESP32-S2: 0,1-17,18,19-21,26,33-42

ESP32-C3 – funkce a omezení jednotlivých pinů

Všechny piny jsou in/out, všechny piny mají možný pull-up.

Info: https://api.riot-os.org/group__cpu__esp32__esp32c3.html a https://www.espressif.com/sites/default/files/documentation/esp32-c3_datasheet_en.pdf

pinfunkceomezení
0ADC1 factory-calibrated.;
RTC GPIO = can be used in deep-sleep mode;
PWM
1ADC1 factory-calibrated.;
RTC GPIO = can be used in deep-sleep mode;
PWM
2ADC1 factory-calibrated.;
RTC GPIO = can be used in deep-sleep mode;
PWM
boostraping = nastavuje chování při bootu
3ADC1 factory-calibrated.;
RTC GPIO = can be used in deep-sleep mode;
PWM
4ADC1 factory-calibrated.;
RTC GPIO = can be used in deep-sleep mode;
default I2C SCL;
external JTAG TMS;
PWM
5ADC2 – není použitelné najednou s WiFi, není kalibrované;
RTC GPIO = can be used in deep-sleep mode;
Vref can be read with function adc_line_vref_to_gpio at GPIO5;
default I2C SDA;
external JTAG TDI;
PWM
6external JTAG TCK;
PWM
při startu projde krátký impulz (není stabilní) – LOW 5 ns
7external JTAG TDO;
PWM
při startu projde krátký impulz (není stabilní) – LOW 5 ns
8PWMboostraping = nastavuje chování při bootu
9UART1_RXD – lze přemapovat;
PWM
boostraping = nastavuje chování při bootu;
při bootu zapnut pullup
10UART1_TXD – lze přemapovat;
PWM
při startu projde krátký impulz (není stabilní) – LOW 5 ns
11
12při bootu zapnut pullup
13při bootu zapnut pullup
14při bootu zapnut pullup
15při bootu zapnut pullup
16UART2_RXD – lze přemapovatpři bootu zapnut pullup
17UART2_TXD – lze přemapovatpři bootu zapnut pullup
18lze použít pokud nepoužíváte USBSerial / USB JTAG;
PWM
USB JTAG D- (white);
při startu projde krátký impulz (není stabilní) – HIGH 50 ms
19lze použít pokud nepoužíváte USBSerial / USB JTAG;
PWM
USB JTAG D+ (green)
20UART0R_XD;
PWM
při bootu zapnut pullup; při bootu projde krátký impulz (není stabilní)- LOW 5 ns
21UARTU0_TXD;
PWM
při bootu zapnuto jako výstup

Possible PWM GPIO pins on the ESP32-C3: 0,1-7,8,9-10,18-21

ESP32 (původní) – funkce a omezení jednotlivých pinů

pinfunkceomezení
0– může budit zařízení ze spánku
– touch 1
– ADC2_CH1 (nelze s WiFi)
– PWM
spouští při bootu programovací režim
1– při bootu posílá HIGH nebo PWM
– serial0 TX
2– může budit zařízení ze spánku
– touch 2
– ADC2_CH2 (nelze s WiFi)
– PWM
3– při bootu posílá HIGH nebo PWM
– serial0 RX
4– může budit zařízení ze spánku
– touch 0
– PWM
5– SPI-SS
– PWM
při bootu posílá HIGH nebo PWM
6při bootu posílá HIGH nebo PWM
7při bootu posílá HIGH nebo PWM
8při bootu posílá HIGH nebo PWM
9při bootu posílá HIGH nebo PWM
10při bootu posílá HIGH nebo PWM
11při bootu posílá HIGH nebo PWM
12– může budit zařízení ze spánku
– ADC2_CH5  (nelze s WiFi)
– PWM
nastavuje při startu napětí pro interní flash paměť
13– může budit zařízení ze spánku
– ADC2_CH4 (nelze s WiFi)
– PWM
14– může budit zařízení ze spánku
– ADC2_CH6  (nelze s WiFi)
– PWM
při bootu posílá HIGH nebo PWM
15– může budit zařízení ze spánku
– ADC2_CH3 (nelze s WiFi)
– PWM
– při bootu posílá HIGH nebo PWM
– řídí to, zda při startu vypisuje ESP32 na sériový port informace. Pak je dále volně použitelný
16– PWM
17– PWM
18– SPI-SCK
– PWM
19– SPI-MISO
– PWM
20
21– I2C SDA (ale I2C lze spustit na kterýchkoli pinech)
– PWM
22– I2C SCL (ale I2C lze spustit na kterýchkoli pinech)
– PWM
23– SPI-MOSI
– PWM
24
25– může budit zařízení ze spánku
– DAC1
– ADC2_CH8  (nelze s WiFi)
– PWM
26– může budit zařízení ze spánku
– DAC2
– ADC2_CH9 (nelze s WiFi)
– PWM
27– může budit zařízení ze spánku
– touch 7
– ADC2_CH7  (nelze s WiFi)
– PWM
28
29
30
31
32– ADC1_CH4 – použitelný i s wifi
– může budit zařízení ze spánku
– touch 9
– PWM
33– ADC1_CH5 – použitelný i s wifi
– může budit zařízení ze spánku
– touch 8
– PWM
34– ADC1_CH6 – použitelný i s wifi
– může budit zařízení ze spánku
jen vstup, nemá pullup
35– ADC1_CH7 – použitelný i s wifi
– může budit zařízení ze spánku
jen vstup, nemá pullup
36– ADC1_CH0 – použitelný i s wifi
– může budit zařízení ze spánku
jen vstup, nemá pullup
37– ADC1_CH1 – použitelný i s wifi
– může budit zařízení ze spánku
jen vstup, nemá pullup
38– ADC1_CH2 – použitelný i s wifi
– může budit zařízení ze spánku
jen vstup, nemá pullup
39– ADC1_CH3 – použitelný i s wifi
– může budit zařízení ze spánku
jen vstup, nemá pullup

Omezené použití pinů (původní ESP32)

  • GPIO2 musí být LOW pro začátek nahrávání aplikace přes sériový port. Tj. pokud máte bare modul a chcete nahrávat aplikaci, musíte si vyvést jumper nebo natvrdo připojit GPIO2 na LOW. Info. Info.
  • GPIO12 nastavuje při startu napětí pro interní flash paměť. Info. Asi je nejjednodušší se mu vyhnout. Už jsem se setkal s modulem, kde když nebyl tento pin připojen na LOW, tak modul nefungoval – neviděl flash paměť. Info.
  • GPIO15 řídí to, zda při startu vypisuje ESP32 na sériový port informace. Pak je dále volně použitelný.
  • Analogové vstupy z banky ADC2 není možné používat souběžně s WiFi. U WiFi aplikací je tedy k dispozici jen 8 A/D vstupů z banky ADC1.
  • ADC1_CH0 (GPIO 36)
  • ADC1_CH1 (GPIO 37)
  • ADC1_CH2 (GPIO 38)
  • ADC1_CH3 (GPIO 39)
  • ADC1_CH4 (GPIO 32)
  • ADC1_CH5 (GPIO 33)
  • ADC1_CH6 (GPIO 34)
  • ADC1_CH7 (GPIO 35)
  • GPIO 34-39 jsou pouze pro vstup. Nemají pull-upy. Není možné je použít pro výstup.
  • Zde je jiná soupiska poznámek k tomu, jaké piny je možno použít.
  • Tyto piny při bootu posílají HIGH nebo PWM signál: 1, 3, 5, 6-11 (SPI flash), 14, 15.
  • Possible PWM GPIO pins on the ESP32: 0,2,4,5,12-19,21-23,25-27,32-33

Stavíte si meteostanici? Tipy na software

Každý bastlíř si postaví meteostanici. A pokud chcete mít na displeji praktické informace, zde je pár zdrojů, jak se k nim dostat – varování ČHMÚ, předpověď počasí, východ a západ slunce, fáze měsíce, …

Celý příspěvek

Kostra hotové IoT aplikace pro ESP32 / ESP8266. A k tomu nějaký server… (1/4)

Jasně, existuje spoustu hotových IoT frameworků pro ESP32 a ESP8266. Chytrých, v cloudu, nemusíte se o nic starat. Mohl jsem něco z nich použít. Ale řekl jsem si NE! A tady je výsledek.

Celý příspěvek